home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #1 / Amiga Plus CD - 1997 - No. 01.iso / pd / programmierung / tds / convsrc / amigae2msg.c < prev    next >
C/C++ Source or Header  |  1995-11-01  |  1KB  |  73 lines

  1. /* AmigaE2Msg.c */
  2.  
  3. #include <exec/types.h>
  4. #include <dos/stdio.h>
  5. #include <clib/dos_protos.h>
  6.  
  7. #include <stdio.h>
  8. #include <string.h>
  9.  
  10. static UBYTE version[] = "$VER: AmigaE2Msg 1.00 (28.01.94)";
  11.  
  12. struct ErrorMsg {
  13.   BOOL warn;
  14.   LONG row,col;
  15.   UBYTE fileName[256];
  16.   UBYTE errStr[256];
  17. };
  18.  
  19.  
  20. void 
  21. PrintMsg(struct ErrorMsg *msg)
  22. {
  23.   printf("<%s> %d %c <%s>\n",msg->fileName,msg->row,(msg->warn ? 'W' : 'E'),msg->errStr);
  24. }
  25.  
  26.  
  27. /*
  28. Amiga E v2.1
  29.  
  30. ERROR: unknown identifier
  31. LINE 9: largest_chip:=_AvailMem($20002)
  32. */
  33.  
  34. BOOL
  35. ConvertMsg(struct ErrorMsg *msg)
  36. {
  37. UBYTE line[256];
  38. UBYTE *scan;
  39. BOOL found;
  40.  
  41.   found = FALSE;
  42.   while (ReadLn(line,255)) {
  43.     if (scan = strstr(line,"ERROR:")) {
  44.       if (sscanf(scan,"ERROR: %[^\n]",msg->errStr) == 1)
  45.         found = TRUE;
  46.     }
  47.     else if (found && (scan = strstr(line,"LINE"))) {
  48.       if (sscanf(scan,"LINE %d:",&msg->row) == 1)
  49.         return(TRUE);
  50.     }
  51.   }
  52.   return(FALSE);
  53. }
  54.  
  55.  
  56. int
  57. main(int argc,UBYTE *argv[])
  58. {
  59. struct ErrorMsg errMsg;
  60. int ret = 0;
  61.  
  62.   if (argc > 1) {
  63.     strcpy(errMsg.fileName,argv[1]);
  64.     while (ConvertMsg(&errMsg))
  65.       PrintMsg(&errMsg);
  66.   }
  67.   else
  68.     ret = 20;
  69.  
  70.   return(ret);
  71. }
  72.  
  73.